/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.sadhar.sipp.perekamanpospendapatanunit;

import java.util.List;
import java.util.Map;
import org.sadhar.errhandler.ClassAntiNull;
import org.sadhar.sia.framework.ClassApplicationModule;
import org.zkoss.zhtml.Messagebox;
import org.zkoss.zul.Button;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.Comboitem;
import org.zkoss.zul.Label;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Window;

/**
 *
 * @author kris
 */
public class PerekamanPosPendapatanUnitPopupSalinWnd extends ClassApplicationModule {

    private Listbox lstboxPosPendapatanPopup;
    private Listbox lstboxPosPendapatan;
    private PerekamanPosPendapatanUnitDAO posPendapatanUnitDAO;
    private Window window;
    private Combobox cmbboxTahunAnggaran;
    private Label lblTahunAnggaran;
    private Label lblNamaUnitKerja;
    private Label lblPosPendapatan;
    private Textbox txtboxKodeUnit;
    private Button btnSalin;
    private Integer tahunDefault;

    public PerekamanPosPendapatanUnitPopupSalinWnd() {
        posPendapatanUnitDAO = new PerekamanPosPendapatanUnitImpl();

    }

    public void onCreate() throws Exception {
        window = (Window) this.getRoot().getFellow("contentDiv").getFirstChild();
        lblTahunAnggaran = (Label) window.getFellow("lblTahunAnggaran");
        lblNamaUnitKerja = (Label) window.getFellow("lblNamaUnitKerja");
        lblPosPendapatan = (Label) window.getFellow("lblPosPendapatan");
        txtboxKodeUnit = (Textbox) window.getFellow("txtboxKodeUnit");
        lstboxPosPendapatanPopup = (Listbox) getFellow("lstboxPosPendapatanPopup");
        lstboxPosPendapatan = (Listbox) window.getFellow("lstboxPosPendapatan");
        cmbboxTahunAnggaran = (Combobox) getFellow("cmbboxTahunAnggaran");
        btnSalin = (Button) getFellow("btnSalin");
        tahunDefault = (Integer.parseInt(lblTahunAnggaran.getValue()) - 1);
        loadPosPendapatan();
        loadTahunKelompokAnggaran();
    }

    public void loadPosPendapatan() throws Exception {
        lstboxPosPendapatanPopup.getItems().clear();
        for (Map map : posPendapatanUnitDAO.getUnitKerjaAndPendapatanByTahun(tahunDefault + "")) {
            Listitem item = new Listitem();
            item.setValue(map);
            item.appendChild(new Listcell(map.get("posPendapatan").toString()));
            item.appendChild(new Listcell(map.get("Nama_unit_kerja").toString()));
            lstboxPosPendapatanPopup.appendChild(item);
        }
    }

    public void loadTahunKelompokAnggaran() throws Exception {
        cmbboxTahunAnggaran.getItems().clear();
        for (Map map : posPendapatanUnitDAO.getTahunAnggaranPendapatanUnit(lblTahunAnggaran.getValue())) {
            Comboitem item = new Comboitem();
            item.setValue(map);
            item.setLabel(map.get("tahunAnggaran").toString());
            cmbboxTahunAnggaran.appendChild(item);
            cmbboxTahunAnggaran.setSelectedItem(item);
        }
    }

    public void cmbboxTahunOnSelect() throws Exception {
        lstboxPosPendapatanPopup.getItems().clear();
        Map map = (Map) cmbboxTahunAnggaran.getSelectedItem().getValue();
        for (Map m : posPendapatanUnitDAO.getUnitKerjaAndPendapatanByTahun(map.get("tahunAnggaran").toString())) {
            Listitem item = new Listitem();
            item.setValue(m);
            item.appendChild(new Listcell(ClassAntiNull.AntiNullString(m.get("posPendapatan").toString())));
            item.appendChild(new Listcell(ClassAntiNull.AntiNullString(m.get("Nama_unit_kerja").toString())));
            lstboxPosPendapatanPopup.appendChild(item);
        }

    }

    public void btnSimpanOnClick() throws InterruptedException, Exception {
        Map map = null;
        boolean simpan = false;
        if (cmbboxTahunAnggaran.getSelectedIndex() >= 0) {
            map = (Map) cmbboxTahunAnggaran.getSelectedItem().getValue();
            for (Map m : posPendapatanUnitDAO.getUnitKerjaAndPendapatanByTahun(map.get("tahunAnggaran").toString())) {
                //Cek apakah data sudah ada didalam kolum posPendapatan dan unit kerja
                try {
                    for (Map cek : posPendapatanUnitDAO.getUnitKerjaAndPendapatanByTahun(lblTahunAnggaran.getValue().toString())) {
                        if (m.get("idPosPendapatan").toString().equals(cek.get("idPosPendapatan").toString()) &&
                                m.get("kodeUnitKerja").toString().equals(cek.get("kodeUnitKerja").toString())) {
                            simpan = false;
                            break;
                        } else {
                            simpan = true;
                        }
                    }
                    if (simpan) {
                        System.out.println("simpan dijalanakn");
                        PerekamanPosPendapatanUnit posPendapatanUnit = new PerekamanPosPendapatanUnit();
                        posPendapatanUnit.setIdPosPendapatan(Integer.valueOf(m.get("idPosPendapatan").toString()));
                        posPendapatanUnit.setKodeUnitKerja(m.get("kodeUnitKerja").toString());
                        posPendapatanUnit.setTahunAnggaran(lblTahunAnggaran.getValue());
                        posPendapatanUnitDAO.insert(posPendapatanUnit);
                        btnSalin.addForward(null, lstboxPosPendapatan, "onClick");
                    }
                } catch (Exception exception) {
                    Messagebox.show("Gagal menyimpan data ", "Pesan kesalahan", Messagebox.OK, Messagebox.ERROR);
                }
            }
            Messagebox.show("Data sudah disalin", "Informasi", Messagebox.OK, Messagebox.INFORMATION);
            this.detach();
        } else {
            Messagebox.show("Data Kosong ", "Pesan kesalahan", Messagebox.OK, Messagebox.ERROR);
        }
    }

    public void lstboxPosPendapataOnSelect() {
    }

    public void btnBatalOnClick() {
        this.detach();
    }
}
